💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    01 fast API | ✅ 저자: 이유정(박사)

    공식문서 링크https://fastapi.tiangolo.com/ko/

    FastAPI는 Python으로 만든 빠르고 현대적인 웹 프레임워크입니다. 주로 REST API 서버를 구축할 때 사용되며, 이름 그대로 매우 빠른 속도와 생산성을 자랑합니다.

    FastAPI란?

    FastAPI = Python + Starlette(비동기 웹서버) + Pydantic(데이터 검증)
    → 빠르고, 자동화된 문서 제공, 타입 기반 코드 작성이 가능한 API 서버 프레임워크

    주요 특징
    특징 설명
    빠른 성능 웹 요청을 빠르게 처리할 수 있어, Node.js나 Go처럼 빠른 웹 서버제작가능, 내부적으로는 Starlette라는 빠른 엔진을 사용하고, 비동기 방식으로 동시에 여러 작업을 처리가능
    자동 데이터 검증 Pydantic을 통해 입력값 자동 검증 (ex: 나이는 int여야 한다 등)
    자동 API 문서 생성 /docs (Swagger), /redoc 경로로 API 문서 자동 생성
    타입 힌트 기반 코드 Python의 타입 힌트를 적극 활용하여 자동 검증 및 IDE 지원 향상
    비동기 지원 async/await 사용하여 높은 처리량 확보 가능
    간단한 구조 Django보다 훨씬 가볍고 직관적인 API 설계

    FastAPI는 언제 사용할까?

    • 백엔드 API 서버 만들 때 (React/Vue와 연결)
    • AI/머신러닝 모델 API 서버 (모델 서빙)
    • 간단한 백엔드 서비스 개발 (CRUD, 인증, DB 처리)
    • 비동기/고성능 서버 구축할 때
    Django vs FastAPI
    항목 Django FastAPI
    목적 풀스택 웹 프레임워크 API 전용 백엔드
    비동기 제한적 지원 완전 지원
    속도 보통 빠름
    문서 자동화 X (추가 설정 필요) O (기본 제공)
    사용 예 웹사이트, 관리자페이지 AI API, 모바일 백엔드

    FastAPI로 할 수 있는 것들

    • REST API (CRUD)
    • JWT 기반 로그인 인증
    • DB 연동 (SQLAlchemy, Tortoise ORM)
    • 머신러닝 모델 배포
    • WebSocket 실시간 통신
    • 비동기 크롤러 서버

    DRF의 Serializer → FastAPI의 Pydantic

    • Django REST Framework에서는 데이터를 검증하거나 JSON으로 변환할 때 Serializer를 써요.
    • FastAPI에서는 같은 역할을 Pydantic의 BaseModel이 해요.
    # DRF에서
    class BookSerializer(serializers.Serializer):
        title = serializers.CharField()
        author = serializers.CharField()
    
    # FastAPI에서는
    class Book(BaseModel):
        title: str
        author: str
    

    즉, Serializer ↔ Pydantic 모델은 1:1 대응 가능해요.


    FastAPI가 Django/DRF에서 "대체 가능한 기능"
    Django/DRF 기능 FastAPI에서 대체 방법 설명
    Serializer (DRF) Pydantic 모델 입력값 검증, 직렬화/역직렬화 모두 처리
    View (APIView, ViewSet) 경로 함수 (@app.get, @app.post 등) URL과 연결된 API 처리 로직 작성
    권한/인증 (IsAuthenticated, JWT 등) Depends + Security + OAuth2 JWT 토큰, 인증 헤더 처리 가능
    URL 라우팅 (urls.py) @app.get("/path") 등 데코레이터 방식 URL에 따른 함수 연결
    API 문서화 (drf-yasg 등) 자동 문서 생성 (/docs, /redoc) Swagger & ReDoc 자동 생성
    테스트 (APITestCase, pytest) pytest, httpx, TestClient 단위 테스트 및 API 테스트 가능
    Request/Response 관리 FastAPI의 Request, Response 객체 요청 정보 접근 및 응답 조작 가능

    FastAPI가 Django의 기능을 대체할 수 없는 것
    Django 기능 FastAPI 대체 가능 여부 이유
    템플릿/HTML 렌더링 ❌ 일부만 가능 Jinja2 등 외부 템플릿 사용 필요. Django처럼 완전한 HTML 렌더링 X
    ORM (models.py, QuerySet) ❌ 직접 제공 안 함 SQLAlchemy 또는 Tortoise-ORM을 별도 사용해야 함
    Admin 페이지 ❌ 없음 Django의 강력한 admin 시스템은 FastAPI에 없음
    전체 웹서비스 구조 FastAPI는 API 서버에 특화되어 있음 (회원가입/로그인/관리자 등 웹서비스 전체 구조는 Django가 강함)

    💡 요약
    항목 FastAPI로 대체 가능? 설명
    API 처리 (views, serializer, docs) 완벽하게 가능 DRF를 거의 완전히 대체 가능
    인증, 권한 관리 일부 대체 가능 JWT/OAuth2 등 수동 설정 필요
    ORM, HTML 템플릿, Admin Django가 강력함 . FastAPI는 API 서버만 잘함

    추천 사용 예시
    목적 추천 프레임워크
    CRUD API, AI 모델 서빙, 모바일 백엔드 FastAPI
    웹사이트, 관리자 페이지, 마케팅 페이지 Django
    둘 다 필요 (관리자 + API) Django + FastAPI 병행 (또는 Django 내부 API 개발)
    TOP
    preload preload